-- Base input template used by mednafen --
□ (left)
△ (upper)
○ (right)
x (lower)
Analog(mode toggle)
D-Pad DOWN ↓
D-Pad LEFT ←
D-Pad RIGHT →
D-Pad UP ↑
L1 (front left shoulder)
L2 (rear left shoulder)
R1 (front right shoulder)
R2 (rear right shoulder)
Left Stick DOWN ↓
Left Stick LEFT ←
Left Stick RIGHT →
Left Stick UP ↑
Left Stick, Button(L3)
Right Stick DOWN ↓
Right Stick LEFT ←
Right Stick RIGHT →
Right Stick UP ↑
Right stick, Button(R3)
SELECT
START

<<Configuration for APPLE2 input module>>

apple2.input.portX.gamepad.button1 = □ (left)
apple2.input.portX.gamepad.button2 = x (lower)
apple2.input.portX.gamepad.down = D-Pad DOWN ↓
apple2.input.portX.gamepad.left = D-Pad LEFT ←
apple2.input.portX.gamepad.resistance_select = 
apple2.input.portX.gamepad.right = D-Pad RIGHT →
apple2.input.portX.gamepad.up = D-Pad UP ↑
apple2.input.portX.joystick.axis_scale = 
apple2.input.portX.joystick.button1 = □ (left)
apple2.input.portX.joystick.button2 = x (lower)
apple2.input.portX.joystick.resistance_select = 
apple2.input.portX.joystick.stick_down = D-Pad DOWN ↓
apple2.input.portX.joystick.stick_left = D-Pad LEFT ←
apple2.input.portX.joystick.stick_right = D-Pad RIGHT →
apple2.input.portX.joystick.stick_up = D-Pad UP ↑

<<Configuration for GB input module>>

gb.input.builtin.gamepad.a = ○ (right)
gb.input.builtin.gamepad.b = x (lower)
gb.input.builtin.gamepad.down = D-Pad DOWN ↓
gb.input.builtin.gamepad.left = D-Pad LEFT ←
gb.input.builtin.gamepad.rapid_a = △ (upper)
gb.input.builtin.gamepad.rapid_b = □ (left)
gb.input.builtin.gamepad.right = D-Pad RIGHT →
gb.input.builtin.gamepad.select = SELECT
gb.input.builtin.gamepad.start = START
gb.input.builtin.gamepad.up = D-Pad UP ↑

<<Configuration for GBA input module>>

gba.input.builtin.gamepad.a = ○ (right)
gba.input.builtin.gamepad.b = x (lower)
gba.input.builtin.gamepad.down = D-Pad DOWN ↓
gba.input.builtin.gamepad.left = D-Pad LEFT ←
gba.input.builtin.gamepad.rapid_a = △ (upper)
gba.input.builtin.gamepad.rapid_b = □ (left)
gba.input.builtin.gamepad.right = D-Pad RIGHT →
gba.input.builtin.gamepad.select = SELECT
gba.input.builtin.gamepad.shoulder_l = L1 (front left shoulder)
gba.input.builtin.gamepad.shoulder_r = R1 (front right shoulder)
gba.input.builtin.gamepad.start = START
gba.input.builtin.gamepad.up = D-Pad UP ↑

<<Configuration for GG input module>>

gg.input.builtin.gamepad.button1 = x (lower)
gg.input.builtin.gamepad.button2 = ○ (right)
gg.input.builtin.gamepad.down = D-Pad DOWN ↓
gg.input.builtin.gamepad.left = D-Pad LEFT ←
gg.input.builtin.gamepad.rapid_button1 = □ (left)
gg.input.builtin.gamepad.rapid_button2 = △ (upper)
gg.input.builtin.gamepad.right = D-Pad RIGHT →
gg.input.builtin.gamepad.start = START
gg.input.builtin.gamepad.up = D-Pad UP ↑

<<Configuration for LYNX input module>>

lynx.input.builtin.gamepad.a = ○ (right)
lynx.input.builtin.gamepad.b = x (lower)
lynx.input.builtin.gamepad.down = D-Pad DOWN ↓
lynx.input.builtin.gamepad.left = D-Pad LEFT ←
lynx.input.builtin.gamepad.option_1 = △ (upper)
lynx.input.builtin.gamepad.option_2 = □ (left)
lynx.input.builtin.gamepad.pause = START
lynx.input.builtin.gamepad.rapid_a = 
lynx.input.builtin.gamepad.rapid_b = 
lynx.input.builtin.gamepad.rapid_option_1 = 
lynx.input.builtin.gamepad.rapid_option_2 = 
lynx.input.builtin.gamepad.right = D-Pad RIGHT →
lynx.input.builtin.gamepad.up = D-Pad UP ↑

<<Configuration for MD input module>>

md.input.portX.gamepad.a = □ (left)
md.input.portX.gamepad.b = x (lower)
md.input.portX.gamepad.c = ○ (right)
md.input.portX.gamepad.down = D-Pad DOWN ↓
md.input.portX.gamepad.left = D-Pad LEFT ←
md.input.portX.gamepad.rapid_a = 
md.input.portX.gamepad.rapid_b = 
md.input.portX.gamepad.rapid_c = 
md.input.portX.gamepad.right = D-Pad RIGHT →
md.input.portX.gamepad.start = START
md.input.portX.gamepad.up = D-Pad UP ↑
md.input.portX.gamepad6.a = □ (left)
md.input.portX.gamepad6.b = x (lower)
md.input.portX.gamepad6.c = ○ (right)
md.input.portX.gamepad6.down = D-Pad DOWN ↓
md.input.portX.gamepad6.left = D-Pad LEFT ←
md.input.portX.gamepad6.mode = SELECT
md.input.portX.gamepad6.rapid_a = 
md.input.portX.gamepad6.rapid_b = 
md.input.portX.gamepad6.rapid_c = 
md.input.portX.gamepad6.rapid_x = 
md.input.portX.gamepad6.rapid_y = 
md.input.portX.gamepad6.rapid_z = 
md.input.portX.gamepad6.right = D-Pad RIGHT →
md.input.portX.gamepad6.start = START
md.input.portX.gamepad6.up = D-Pad UP ↑
md.input.portX.gamepad6.x = △ (upper)
md.input.portX.gamepad6.y = L1 (front left shoulder)
md.input.portX.gamepad6.z = R1 (front right shoulder)

<<Configuration for NES input module>>

nes.input.portX.gamepad.a = ○ (right)
nes.input.portX.gamepad.b = x (lower)
nes.input.portX.gamepad.down = D-Pad DOWN ↓
nes.input.portX.gamepad.left = D-Pad LEFT ←
nes.input.portX.gamepad.rapid_a = △ (upper)
nes.input.portX.gamepad.rapid_b = □ (left)
nes.input.portX.gamepad.right = D-Pad RIGHT →
nes.input.portX.gamepad.select = SELECT
nes.input.portX.gamepad.start = START
nes.input.portX.gamepad.up = D-Pad UP ↑

<<Configuration for NGP input module>>

ngp.input.builtin.gamepad.a = x (lower)
ngp.input.builtin.gamepad.b = ○ (right)
ngp.input.builtin.gamepad.down = D-Pad DOWN ↓
ngp.input.builtin.gamepad.left = D-Pad LEFT ←
ngp.input.builtin.gamepad.option = START
ngp.input.builtin.gamepad.rapid_a = □ (left)
ngp.input.builtin.gamepad.rapid_b = △ (upper)
ngp.input.builtin.gamepad.right = D-Pad RIGHT →
ngp.input.builtin.gamepad.up = D-Pad UP ↑

<<Configuration for PCE input module>>

pce.input.portX.gamepad.down = D-Pad DOWN ↓
pce.input.portX.gamepad.i = ○ (right)
pce.input.portX.gamepad.ii = x (lower)
pce.input.portX.gamepad.iii = R1 (front right shoulder)
pce.input.portX.gamepad.iv = R2 (rear right shoulder)
pce.input.portX.gamepad.left = D-Pad LEFT ←
pce.input.portX.gamepad.mode_select = Right stick, Button(R3)
pce.input.portX.gamepad.rapid_i = △ (upper)
pce.input.portX.gamepad.rapid_ii = □ (left)
pce.input.portX.gamepad.right = D-Pad RIGHT →
pce.input.portX.gamepad.run = START
pce.input.portX.gamepad.select = SELECT
pce.input.portX.gamepad.up = D-Pad UP ↑
pce.input.portX.gamepad.v = L1 (front left shoulder)
pce.input.portX.gamepad.vi = L2 (rear left shoulder)

<<Configuration for PCE_FAST input module>>

pce_fast.input.portX.gamepad.down = D-Pad DOWN ↓
pce_fast.input.portX.gamepad.i = ○ (right)
pce_fast.input.portX.gamepad.ii = x (lower)
pce_fast.input.portX.gamepad.iii = R1 (front right shoulder)
pce_fast.input.portX.gamepad.iv = R2 (rear right shoulder)
pce_fast.input.portX.gamepad.left = D-Pad LEFT ←
pce_fast.input.portX.gamepad.mode_select = Right stick, Button(R3)
pce_fast.input.portX.gamepad.rapid_i = △ (upper)
pce_fast.input.portX.gamepad.rapid_ii = □ (left)
pce_fast.input.portX.gamepad.right = D-Pad RIGHT →
pce_fast.input.portX.gamepad.run = START
pce_fast.input.portX.gamepad.select = SELECT
pce_fast.input.portX.gamepad.up = D-Pad UP ↑
pce_fast.input.portX.gamepad.v = L1 (front left shoulder)
pce_fast.input.portX.gamepad.vi = L2 (rear left shoulder)

<<Configuration for PCFX input module>>

pcfx.input.portX.gamepad.down = D-Pad DOWN ↓
pcfx.input.portX.gamepad.i = ○ (right)
pcfx.input.portX.gamepad.ii = x (lower)
pcfx.input.portX.gamepad.iii = R1 (front right shoulder)
pcfx.input.portX.gamepad.iv = R2 (rear right shoulder)
pcfx.input.portX.gamepad.left = D-Pad LEFT ←
pcfx.input.portX.gamepad.mode1 = △ (upper)
pcfx.input.portX.gamepad.mode2 = □ (left)
pcfx.input.portX.gamepad.right = D-Pad RIGHT →
pcfx.input.portX.gamepad.run = START
pcfx.input.portX.gamepad.select = SELECT
pcfx.input.portX.gamepad.up = D-Pad UP ↑
pcfx.input.portX.gamepad.v = L1 (front left shoulder)
pcfx.input.portX.gamepad.vi = L2 (rear left shoulder)

<<Configuration for PSX input module>>

psx.input.portX.dualshock.analog = Analog(mode toggle)
psx.input.portX.dualshock.circle = ○ (right)
psx.input.portX.dualshock.cross = x (lower)
psx.input.portX.dualshock.down = D-Pad DOWN ↓
psx.input.portX.dualshock.l1 = L1 (front left shoulder)
psx.input.portX.dualshock.l2 = L2 (rear left shoulder)
psx.input.portX.dualshock.l3 = Left Stick, Button(L3)
psx.input.portX.dualshock.left = D-Pad LEFT ←
psx.input.portX.dualshock.lstick_down = Left Stick DOWN ↓
psx.input.portX.dualshock.lstick_left = Left Stick LEFT ←
psx.input.portX.dualshock.lstick_right = Left Stick RIGHT →
psx.input.portX.dualshock.lstick_up = Left Stick UP ↑
psx.input.portX.dualshock.r1 = R1 (front right shoulder)
psx.input.portX.dualshock.r2 = R2 (rear right shoulder)
psx.input.portX.dualshock.r3 = Right stick, Button(R3)
psx.input.portX.dualshock.rapid_circle = 
psx.input.portX.dualshock.rapid_cross = 
psx.input.portX.dualshock.rapid_square = 
psx.input.portX.dualshock.rapid_triangle = 
psx.input.portX.dualshock.right = D-Pad RIGHT →
psx.input.portX.dualshock.rstick_down = Right Stick DOWN ↓
psx.input.portX.dualshock.rstick_left = Right Stick LEFT ←
psx.input.portX.dualshock.rstick_right = Right Stick RIGHT →
psx.input.portX.dualshock.rstick_up = Right Stick UP ↑
psx.input.portX.dualshock.select = SELECT
psx.input.portX.dualshock.square = □ (left)
psx.input.portX.dualshock.start = START
psx.input.portX.dualshock.triangle = △ (upper)
psx.input.portX.dualshock.up = D-Pad UP ↑
psx.input.portX.gamepad.circle = ○ (right)
psx.input.portX.gamepad.cross = x (lower)
psx.input.portX.gamepad.down = D-Pad DOWN ↓
psx.input.portX.gamepad.l1 = L1 (front left shoulder)
psx.input.portX.gamepad.l2 = L2 (rear left shoulder)
psx.input.portX.gamepad.left = D-Pad LEFT ←
psx.input.portX.gamepad.r1 = R1 (front right shoulder)
psx.input.portX.gamepad.r2 = R2 (rear right shoulder)
psx.input.portX.gamepad.rapid_circle = 
psx.input.portX.gamepad.rapid_cross = 
psx.input.portX.gamepad.rapid_square = 
psx.input.portX.gamepad.rapid_triangle = 
psx.input.portX.gamepad.right = D-Pad RIGHT →
psx.input.portX.gamepad.select = SELECT
psx.input.portX.gamepad.square = □ (left)
psx.input.portX.gamepad.start = START
psx.input.portX.gamepad.triangle = △ (upper)
psx.input.portX.gamepad.up = D-Pad UP ↑

<<Configuration for SMS input module>>

sms.input.portX.gamepad.down = D-Pad DOWN ↓
sms.input.portX.gamepad.fire1 = □ (left)
sms.input.portX.gamepad.fire2 = x (lower)
sms.input.portX.gamepad.left = D-Pad LEFT ←
sms.input.portX.gamepad.pause = START
sms.input.portX.gamepad.rapid_fire1 = △ (upper)
sms.input.portX.gamepad.rapid_fire2 = ○ (right)
sms.input.portX.gamepad.right = D-Pad RIGHT →
sms.input.portX.gamepad.up = D-Pad UP ↑

<<Configuration for SNES input module>>

snes.input.portX.gamepad.a = ○ (right)
snes.input.portX.gamepad.b = x (lower)
snes.input.portX.gamepad.down = D-Pad DOWN ↓
snes.input.portX.gamepad.l = L1 (front left shoulder)
snes.input.portX.gamepad.left = D-Pad LEFT ←
snes.input.portX.gamepad.r = R1 (front right shoulder)
snes.input.portX.gamepad.rapid_a = 
snes.input.portX.gamepad.rapid_b = 
snes.input.portX.gamepad.rapid_x = 
snes.input.portX.gamepad.rapid_y = 
snes.input.portX.gamepad.right = D-Pad RIGHT →
snes.input.portX.gamepad.select = SELECT
snes.input.portX.gamepad.start = START
snes.input.portX.gamepad.up = D-Pad UP ↑
snes.input.portX.gamepad.x = △ (upper)
snes.input.portX.gamepad.y = □ (left)

<<Configuration for SNES_FAUST input module>>

snes_faust.input.portX.gamepad.a = ○ (right)
snes_faust.input.portX.gamepad.b = x (lower)
snes_faust.input.portX.gamepad.down = D-Pad DOWN ↓
snes_faust.input.portX.gamepad.l = L1 (front left shoulder)
snes_faust.input.portX.gamepad.left = D-Pad LEFT ←
snes_faust.input.portX.gamepad.r = R1 (front right shoulder)
snes_faust.input.portX.gamepad.rapid_a = 
snes_faust.input.portX.gamepad.rapid_b = 
snes_faust.input.portX.gamepad.rapid_x = 
snes_faust.input.portX.gamepad.rapid_y = 
snes_faust.input.portX.gamepad.right = D-Pad RIGHT →
snes_faust.input.portX.gamepad.select = SELECT
snes_faust.input.portX.gamepad.start = START
snes_faust.input.portX.gamepad.up = D-Pad UP ↑
snes_faust.input.portX.gamepad.x = △ (upper)
snes_faust.input.portX.gamepad.y = □ (left)

<<Configuration for SS input module>>

ss.input.portX.3dpad.a = □ (left)
ss.input.portX.3dpad.analog_down = Left Stick DOWN ↓
ss.input.portX.3dpad.analog_left = Left Stick LEFT ←
ss.input.portX.3dpad.analog_right = Left Stick RIGHT →
ss.input.portX.3dpad.analog_up = Left Stick UP ↑
ss.input.portX.3dpad.b = x (lower)
ss.input.portX.3dpad.c = ○ (right)
ss.input.portX.3dpad.down = D-Pad DOWN ↓
ss.input.portX.3dpad.left = D-Pad LEFT ←
ss.input.portX.3dpad.ls = L2 (rear left shoulder)
ss.input.portX.3dpad.mode = SELECT
ss.input.portX.3dpad.right = D-Pad RIGHT →
ss.input.portX.3dpad.rs = R2 (rear right shoulder)
ss.input.portX.3dpad.start = START
ss.input.portX.3dpad.up = D-Pad UP ↑
ss.input.portX.3dpad.x = △ (upper)
ss.input.portX.3dpad.y = L1 (front left shoulder)
ss.input.portX.3dpad.z = R1 (front right shoulder)
ss.input.portX.gamepad.a = □ (left)
ss.input.portX.gamepad.b = x (lower)
ss.input.portX.gamepad.c = ○ (right)
ss.input.portX.gamepad.down = D-Pad DOWN ↓
ss.input.portX.gamepad.left = D-Pad LEFT ←
ss.input.portX.gamepad.ls = L2 (rear left shoulder)
ss.input.portX.gamepad.right = D-Pad RIGHT →
ss.input.portX.gamepad.rs = R2 (rear right shoulder)
ss.input.portX.gamepad.start = START
ss.input.portX.gamepad.up = D-Pad UP ↑
ss.input.portX.gamepad.x = △ (upper)
ss.input.portX.gamepad.y = L1 (front left shoulder)
ss.input.portX.gamepad.z = R1 (front right shoulder)

<<Configuration for VB input module>>

vb.input.builtin.gamepad.a = R1 (front right shoulder)
vb.input.builtin.gamepad.b = L1 (front left shoulder)
vb.input.builtin.gamepad.down-l = D-Pad DOWN ↓
vb.input.builtin.gamepad.down-r = x (lower)
vb.input.builtin.gamepad.left-l = D-Pad LEFT ←
vb.input.builtin.gamepad.left-r = □ (left)
vb.input.builtin.gamepad.lt = L2 (rear left shoulder)
vb.input.builtin.gamepad.rapid_a = 
vb.input.builtin.gamepad.rapid_b = 
vb.input.builtin.gamepad.right-l = D-Pad RIGHT →
vb.input.builtin.gamepad.right-r = ○ (right)
vb.input.builtin.gamepad.rt = R2 (rear right shoulder)
vb.input.builtin.gamepad.select = SELECT
vb.input.builtin.gamepad.start = START
vb.input.builtin.gamepad.up-l = D-Pad UP ↑
vb.input.builtin.gamepad.up-r = △ (upper)

<<Configuration for WSWAN input module>>

wswan.input.builtin.gamepad.a = R1 (front right shoulder)
wswan.input.builtin.gamepad.b = L1 (front left shoulder)
wswan.input.builtin.gamepad.down-x = D-Pad DOWN ↓
wswan.input.builtin.gamepad.down-y = x (lower)
wswan.input.builtin.gamepad.left-x = D-Pad LEFT ←
wswan.input.builtin.gamepad.left-y = □ (left)
wswan.input.builtin.gamepad.rapid_a = 
wswan.input.builtin.gamepad.rapid_b = 
wswan.input.builtin.gamepad.right-x = D-Pad RIGHT →
wswan.input.builtin.gamepad.right-y = ○ (right)
wswan.input.builtin.gamepad.start = START
wswan.input.builtin.gamepad.up-x = D-Pad UP ↑
wswan.input.builtin.gamepad.up-y = △ (upper)